package cn.iune.backcenter.author;

import java.util.List;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@Aspect//指定这是一个其切面
public class SaOproleDaoAspect {
	
	@Autowired
	private ISaOppermissionService saOppermissionService;
	@Autowired
	private ISaOpauthorizeService saOpauthorizeService;
	
	/*
	//指定切入点（增加）
    @Pointcut("execution(* cn.iune.usercenter.person.ISaOproleDao.insert(..)) && args(obj)")
    public void insertPointCut(SaOprole obj){}
    //指定通知以及通知的范围
    @Before("insertPointCut(obj)")
    public void beforeInsert(SaOprole obj){
   	
    }
    */

	//指定切入点（删除）
    @Pointcut("execution(* cn.iune.backcenter.author.ISaOproleDao.delete(..)) && args(fID)")
    public void deletePointCut(String fID){}
    
    //指定通知以及通知的范围
    @Transactional
    @Before("deletePointCut(fID)")
    public void beforeDelete(String fID){
//    	SaOprole obj = saOproleUtil.getByID(fID);
    	    	
		//删除关联授权
    	List<SaOpauthorize> list1 = saOpauthorizeService.getBysAuthorizeRoleID(fID);
    	for(SaOpauthorize obj : list1){
    		saOpauthorizeService.delete(obj.getsID());
    	}
		//删除关联权限
    	List<SaOppermission> list2 = saOppermissionService.getByPermissionRoleID(fID);
    	for(SaOppermission obj : list2){
    		saOppermissionService.delete(obj.getsID());
    	}
    	
    }
    
    /*
	//指定切入点（修改）
    @Pointcut("execution(* cn.iune.usercenter.person.ISaOproleDao.update(..)) && args(obj)")
    public void updatePointCut(SaOprole obj){}
    //指定通知以及通知的范围
    @Before("updatePointCut(obj)")
    public void beforeUpdate(SaOprole obj){
//		//删除
//		this.beforeDelete(obj.getfID());
//		//插入
//		this.beforeInsert(obj);
    }
    */

}
